<?php
/**
 * 
 * \author Bastien LEMAITRE
 *
 */
class CQuestion extends \BaseController {
	private $question;
	
	public function index() {
		$this->viewPlay();
		echo JsUtils::execute("$(document).ready(ProgressBar())");
		
	}	
	
	public function newQuestion($idDomaine,$libelle){
		$joueur=$this->loadPlayer();
		if($joueur!=null){
			$this->question=new Question();
			$this->question->setIdDomaine($idDomaine);
			$this->question->setIdJoueur($joueur->getId());
			$this->question->setLibelle($libelle);
			$this->question->setValidation(false);
			if(DAO::insert($this->question)==1){
				echo 'La question a été ajoutée à la base de donnée, merci pour votre engagement envers notre application, elle sera validée d\'ici peu.';
			}else{
				echo 'Impossible d\'ajouter votre question à notre base de données, veuillez réesaayer ultérieurement.';
			}
		}else{
			echo 'Impossible de charger votre profil, reconnectez vous, si le problème persiste contactez l\'administrateur.';
		}	
	}

	private function loadPlayer(){
		$joueur=null;
		if (array_key_exists('joueur', $_SESSION)){
			$joueur=$_SESSION['joueur'];
		}
		return $joueur;
	}
	
	private function loadQuestion($idQuestion){
		$this->question=DAO::getOne("Question", $idQuestion);
	}
	
	public function validateQuestion($idQuestion,$validate){
		$this->loadQuestion($idQuestion);
		$this->question->setValidation($validate);
		DAO::update($this->question);
	}
	
	public function modifyQuestion($idQuestion,$libelle){
		$this->loadQuestion($idQuestion);
		$this->question->setLibelle($libelle);
		DAO::update($this->question);
	}
	
	public static function foundQuestion($domaine){
		$question=DAO::getOne("Question","iddomaine=".$domaine->getId()." ORDER BY RAND() LIMIT 1");
		if(!empty($question)){
			return $question;
		}
	}
	
	public function loadQuestionAndAnswers(){
		if (array_key_exists('idpartie', $_POST)){
			$idpartie=$_POST['idpartie'];
		}
		if (array_key_exists('iddomaine', $_POST)){
			$iddomaine=$_POST['iddomaine'];
		}
	
		$partie=DAO::getOne("Partie", $idpartie);
		
		//affichage des couronnes
		$serie=CSerie::loadSerie($partie);
		$nombreInitial=$serie->getNombre();
		switch ($nombreInitial)
		{case 1:
			//affichage couronne 1
			echo JsUtils::doSomethingOn("#couronne".$nombreInitial, "removeClass","'couronne".$nombreInitial."'");
			echo JsUtils::doSomethingOn("#couronne".$nombreInitial, "addClass","'couronne".$nombreInitial."Move'");
			break;
				
		case 2:
			//affichage couronne 1 et 2
			
			//couronne2
			$nombre1=$nombreInitial-1;
			echo JsUtils::doSomethingOn("#couronne".$nombre1, "removeClass","'couronne".$nombre1."'");
			echo JsUtils::doSomethingOn("#couronne".$nombre1, "addClass","'couronne".$nombre1."Move'");
			
			//couronne2
			echo JsUtils::doSomethingOn("#couronne".$nombreInitial, "removeClass","'couronne".$nombreInitial."'");
			echo JsUtils::doSomethingOn("#couronne".$nombreInitial, "addClass","'couronne".$nombreInitial."Move'");
			break;
		
		case 3:
			//affichage couronne 1,2 et 3
			//couronne 1
			$nombre1=$nombreInitial-2;
			echo JsUtils::doSomethingOn("#couronne".$nombre1, "removeClass","'couronne".$nombre1."'");
			echo JsUtils::doSomethingOn("#couronne".$nombre1, "addClass","'couronne".$nombre1."Move'");
			
			//couronne 2
			$nombre2=$nombreInitial-1;
			echo JsUtils::doSomethingOn("#couronne".$nombre2, "removeClass","'couronne".$nombre2."'");
			echo JsUtils::doSomethingOn("#couronne".$nombre2, "addClass","'couronne".$nombre2."Move'");
			
			//couronne 3
			echo JsUtils::doSomethingOn("#couronne".$nombreInitial, "removeClass","'couronne".$nombreInitial."'");
			echo JsUtils::doSomethingOn("#couronne".$nombreInitial, "addClass","'couronne".$nombreInitial."Move'");
			
			break;	
		}
		
		// fin affichage couronnes
		$domaine=DAO::getOne("Domaine", $iddomaine);
		$question=CQuestion::foundQuestion($domaine);
		$reponses=CReponse::loadAnswers($question->getId());
		return array("idpartie"=>$idpartie,"iddomaine"=>$iddomaine,"question"=>$question,"reponses"=>$reponses);
	}
	
	public function viewPlay(){		
		$this->loadView("vQuestion",$this->loadQuestionAndAnswers());
		if (array_key_exists('idpartie', $_POST)){
			$idpartie=$_POST['idpartie'];
		}	
		echo JsUtils::getAndBindTo(".answer", "click","/trivia/CQuestion/answerChoosen/".$idpartie, "{}","#jQuery");
	}
	
	public function viewGestionQuestion(){
		$joueur=TriviaUtils::loadPlayer();
		$monde=$joueur->getMonde();
		$domaines=DAO::getAll("Domaine","idmonde='".$monde->getId()."'");
		$questions=DAO::getAll("Question","idjoueur='".$joueur->getId()."'");
		$result=array();
		foreach ($questions as $question){
			$result[$question->getDomaine()->getLibelle()]["domaine"]=$question->getDomaine();
			$result[$question->getDomaine()->getLibelle()]["questions"][]=$question;
		}
		$this->loadView("vGestionQuestions", array("monde"=>$monde,"domaines"=>$domaines,"result"=>$result));
	}
	
	public function answerChoosen($id){		
		$partie=DAO::getOne("Partie", $id[0]);
		date_default_timezone_set("Europe/Paris");
		$partie->setDernierCoup(date("Y-m-d H:i:s"));
		$joueur=TriviaUtils::loadPlayer();
		$idReponse=str_replace("answer","",$id[1]);	
		$domaine=CReponse::loadAnswer($idReponse)->getQuestion()->getDomaine();
		if(CReponse::checkAnswer($idReponse)){			
			CStatistiques::incStats($domaine);
			CSerie::incScore($partie,$domaine);
			echo JsUtils::doSomethingOn("#answer".$idReponse,"css","'background', '#73E95C'");
		}else{
			if($partie->getJoueur1()==$joueur){
				$partie->setJoueurEnCours($partie->getJoueur2());
			}else{
				$partie->setJoueurEnCours($partie->getJoueur1());
			}
			CStatistiques::incStats($domaine,false);
			echo JsUtils::doSomethingOn("#answer".$idReponse,"css","'background', '#d9534f'");
			echo JsUtils::doSomethingOn("#answer".CReponse::goodAnswer($idReponse),"css","'background', '#73E95C'");
		}
		DAO::update($partie);
	}
	
	public static function changePlayer($id){
		$partie=DAO::getOne("Partie", $id[0]);
		$domaine=DAO::getOne("Domaine", $id[1]);
		CStatistiques::incStats($domaine,false);
		$joueur=TriviaUtils::loadPlayer();
		if($partie->getJoueur1()==$joueur){
			$partie->setJoueurEnCours($partie->getJoueur2());
		}else{
			$partie->setJoueurEnCours($partie->getJoueur1());
		}
		DAO::update($partie);
	}
	
	public function loadEdit($id){
		$id=$id[0];
		$question=DAO::getOne("Question", $id);
		$reponses=DAO::getAll("Reponse","idquestion='".$id."'");
		$result=array();
		$result["libelle"]=$question->getLibelle();
		$result["domaine"]=$question->getDomaine()->getId();
		$i=1;
		foreach ($reponses as $reponse){
			if($reponse->getIsTrue()==1){
				$result["repValid"]=$reponse->getLibelle();
			}else{
				$result["rep".$i]=$reponse->getLibelle();
				$i++;
			}
		}		
		echo json_encode($result);
	}
	
	public function delete($id){
		$id=$id[0];
		$question=DAO::getOne("Question", $id);
		if(DAO::delete($question)==1){
			$result=array("valid"=>true,"text"=>$question->getLibelle()." à correctement été supprimée.");
		}else{
			$result=array("valid"=>false,"text"=>"Impossible de supprimer ".$question->getLibelle().".");
		}
		echo json_encode($result);
	}
}